#include<iostream>
using namespace std;

/*拷贝构造函数的第一个参数必须是
 * 自己类型的引用，且其他参数全部都有
 * 默认值*/

/*
class test{
	private:
		int a;
	public:
		test()....
		test(test& nt,.......=0.....)
};
*/
/*拷贝构造函数*/
/*蛋疼，合成的拷贝构造函数会把类内的数组元素执行挨个拷贝*/

/*注意，初始化与赋值不同。初始化调用的是拷贝构造函数*/
/*注意，编译器可以略过拷贝构造函数*/
/*
class test{
	private:
		int a;
	public:
		test(int na):a(na){}
		test(const test& na);
		~test(){}
};

test::test(const test& na){
	cout<<"拷贝构造函数"<<endl;
}
拷贝到一个临时对象上
test print(test nt){
	return nt;
}*/



/*
 *拷贝赋值运算符同样可以被编译器合成。
 */

/*=default*/

/*
class Sales_data{
public:
	Sales_data() = default;
	Sales_data(Sales_data&) = default;
	~Sales_data() = default;
};

Sales_data& Sales_data::operator=(const Sales_data&) = default

*/

/*通过删除的函数可以不允许一定的操作
 * 析构函数不能是删除的
class test{
	private:
		int a;
	public:
		test() = delete;
};
*/



int main(){
	/*
	test a(1);
	print(a);
	*/

	/*
	int a[3]={1,2,3};
	int b[3]=a;
	*/
}
